Penpen7のブログ

Penpen7のエンジニアブログ

RustでByteStreamをio::Readトレイトで扱えるようにする方法

初めに

Rustでバイトストリームを読みたかったので、その備忘録

ChatGPTに聞いてみた

Rustには、ByteStreamを扱うための標準的なトレイトとして、io::Readがあります。io::Readトレイトを実装することで、バイトストリームを読み込むことができます。しかし、バイトストリームを直接io::Readトレイトに渡すことはできません。この場合、一般的には、io::Cursorを使用して、バイトストリームをラップする必要があります。以下は、その方法です。

use std::io::{self, Read, Cursor};

fn main() -> io::Result<()> {
    // バイトストリームを作成する
    let bytes = vec![0x48, 0x65, 0x6c, 0x6c, 0x6f];
    let mut cursor = Cursor::new(bytes);

    // io::Readトレイトを使用して、バイトストリームを読み込む
    let mut buffer = [0; 5];
    cursor.read(&mut buffer)?;

    println!("{:?}", buffer); //  [72, 101, 108, 108, 111]
    Ok(())
}

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6c9cf1c0e2035c1fdeebf1ecc89604b9
上記のコードでは、バイトストリームを作成し、io::Cursorでラップしています。そして、io::Readトレイトを使用して、バイトストリームを読み込んでいます。
これで、Rustでバイトストリームをio::Readトレイトで扱えるようになります。

© Penpen7